iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Mobile Development

IOS的打怪升級之路系列 第 25

鐵人賽第二十五天 天氣API(四) 請求資料

  • 分享至 

  • xImage
  •  

說明

接下來將示範如何發送請求,並將資料解包。/images/emoticon/emoticon08.gif

實作

  1. 準備城市資料:我們創建了一個存放可供查詢天氣的城市陣列,並選擇其中一個作為請求的目標城市。
let cities = ["臺北市", "新北市", "桃園市", "臺中市", "臺南市", "高雄市", "基隆市", "新竹市", "嘉義市", "苗栗縣", "彰化縣", "南投縣", "雲林縣", "嘉義縣", "屏東縣", "宜蘭縣", "花蓮縣", "台東縣", "澎湖縣", "金門縣", "連江縣"]
var city = "臺北市"
  1. 生成合法 URL:透過 LegitimateURl函數將請求的 URL 進行編碼處理,解決 URL 中可能存在的特殊字符問題。
let requestURL = LegitimateURl(requestURL: "https://opendata.cwa.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization="+yourtoken+"&locationName=" + city)
  1. 創建LegitimateURl函數:該函數對 URL 進行編碼處理,並返回合法的 URL。
func LegitimateURl(requestURL: String) -> URL {
        let LegitimateURL = requestURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
        let url = URL.init(string: LegitimateURL!)
        
        return url!
    }
  1. 發送請求與解析資料:使用 URLSession.shared.dataTask 發送網路請求,並在獲取到資料後使用 JSONDecoder 來將其轉換成 Swift 結構體,方便後續處理。
URLSession.shared.dataTask(with: requestURL){[self]
            (data,response,error) in
            
            if let error = error {
                print(error.localizedDescription)
            }
            
            if let response = response {
                print(response as! HTTPURLResponse)
            }
            
            if let data = data {
                let decoder = JSONDecoder()
                
                    print(weatherDat ?? 0)
                }catch{
                    print(error.localizedDescription)
                }
            }
        }.resume()

結語

透過這次的實作,我們成功發送了天氣 API 的請求,並將返回的 JSON 資料進行了解包與解析,最後透過 UI 更新來顯示結果。/images/emoticon/emoticon07.gif


上一篇
鐵人賽第二十四天 天氣API(三) 解析API
下一篇
鐵人賽第二十六天 天氣API(五) PickerView的設定
系列文
IOS的打怪升級之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言